Simulation d’une boucle à verrouillage de phase sous Orcad Spice
1.2. Plage de verrouillage
et de capture
2.1. Comparateur de phase à
OU Exclusif
2.2. Comparateur de phase
trois états.
2.2.1. Synthétiseur de fréquence
2.2.2. Modulateur de fréquence.
2.2.3. Démodulateur de
fréquence.
Annexe 1 : Modélisation comportementale
de l’oscillateur commandé en tension
Gestion des
fichiers et schémas
Annexe 2 : description du comparateur 3
états
Annexe 3 : fonction de transfert
normalisée en boucle fermée de la BVP à comparateur 3 états
L’objectif de cette séance est d’observer le comportement d’une boucle à verrouillage de phase au moyen d’un simulateur de circuits, ce qui nous permettra une approche plus simple que le montage réel, pour les régimes transitoires en particuliers.
Nous étudierons quelques applications typiques comme la modulation et démodulation de fréquence, la synthèse de fréquence.
Dans une première partie, la boucle étudiée sera une boucle analogique, modélisée de manière comportementale. Ces choix permettent des simulations rapides, nécessitant peu de composants. Les simulations pourront donc être réalisées avec la version « démo » d’Orcad Spice. Les non-linéarités étant d’autre part moins franche qu’avec une boucle semi-numérique, on vérifie plus facilement la théorie, ce qui simplifie les choses pour une première approche.
Nous nous intéresserons ensuite à une boucle semi-numérique, donc plus proche de la réalité technologique d’aujourd’hui. Le comparateur de phase sera dans un premier temps un simple OU exclusif, puis un comparateur trois état tel que ceux que l’on trouve dans la plupart des BVP actuelles.
Un des premiers problèmes rencontrés est la modélisation de l’oscillateur contrôlé en tension (OCT ou VCO pour voltage controled oscillator en anglais). Pour cette partie on se réfèrera à l’annexe 1 où toute la procédure est détaillée.
Une fois l’OCT fonctionnant correctement, on peut passer à la description d’une boucle complète.
Le comparateur de phase est réalisé au moyen du multiplieur « Mult » de « ABM », le filtre de boucle par la fonction de transfert « Laplace » de « ABM » (on pourrait aussi placer un circuit RC), le générateur d’attaque par « Vsin » de « Source », tandis que pour introduire l’OCT on place un bloc hiérarchique comme indiqué dans l’annexe 1:
On souhaite faire fonctionner la boucle autour de 10KHz. Calculer la fréquence de coupure du filtre premier ordre pour avoir une atténuation d’environ 20 dB pour le premier harmonique à la sortie du multiplieur lorsque la fréquence d’entrée est 10 KHz.
Vérifier que les paramètres de l’OCT sont bien initialisé pour une fréquence centrale de 10 kHz pour une gamme de +/-5 kHz autour avec un gain de 1 kHz/V soit 6.28 krd/s/V (pour cela descendre dans la hiérarchie par le menu contextuel).
Lancer une simulation sur 5ms avec un pas de calcul minimal d’un dixième de période de la fréquence centrale.
Observer l’accrochage en visualisant en particuliers, sur une première fenêtre la tension de sortie du multiplieur, sur une seconde la tension de sortie du filtre, puis sur une troisième les tensions d’entrées et de sortie. On n’hésitera pas à utiliser le zoom de manière à agrandir une partie intéressante.
Tensions en entrée et sortie du filtre lors de l’accrochage
Tension en sortie du filtre, tensions d’entrée et de sortie en début d’accrochage.
Tension en sortie du filtre, tensions d’entrée et de sortie la boucle accrochée.
Faire des essais pour différentes fréquences du générateur d’entrée; on observera en particulier le déphasage entre tension d’entrée et de sortie un fois la boucle accrochée.
L’observation des plages de verrouillage et de capture nécessite une tension d’entrée modulée en fréquence par une rampe. On pourra utiliser le montage suivant, résultant de la modification de celui du paragraphe précédent :
Effectuer une simulation sur 100 ms avec un pas de calcul minimal de 10 µs et en visualisant tension de sortie du filtre lors d’une rampe montante puis descendante du signal modulant (inverser V1 et V2), calculer les plages de verrouillage et de capture.
Tension de sortie du filtre lors d’une rampe descendante du signal modulant.
Tension de sortie du filtre lors d’une rampe montante du signal modulant.
Justifier la présence d’une ondulation plus important en sortie du filtre lors d’une rampe descendante du signal modulant.
Pour mettre en évidence l’effet des constantes de temps de la boucle sur ces plages ; on pourra refaire les mêmes simulations avec cette fois une constante de temps de 100 µs pour le filtre.
Tension à la sortie du filtre avec une constante de temps de 100 µs.
Justifier les résultats.
On semble avoir gagné sur la largeur des plages de capture et de verrouillages. Sur quel paramètre avons nous alors perdu en performance ?
Pour mesurer cette perte de performance, on peut envisager une analyse fréquentielle de la tension de sortie. Pour que cette analyse soit valable, elle doit être faite en régime établi, avec la méthode décrite au paragraphe suivant.
Une caractéristique importante pour les boucles à verrouillage de phase est pureté spectrale du signal de sortie ; en effet, que l’application soit la récupération d’un signal bruité ou la synthèse de fréquence, on souhaite en sortie un signal stable en fréquence et en phase.
Dans le cas d’une simulation, la transformée de Fourier du signal de sortie n’aura de sens que si la BVP fonctionne déjà en régime établi.
Pour obtenir ce mode de fonctionnement, plusieurs possibilités s’offrent à nous :
- effectuer une analyse suffisamment longue pour que le régime transitoire soit négligeable (le temps de simulation sera donc long) ;
- il est possible de gagner en précision en demandant dans le profil de simulation au calculateur de ne prendre en compte les données qu’après un temps correspondant au régime transitoire ;
- effectuer une première simulation afin de pouvoir mesurer les conditions correspondant au régime établi ; on peut en effet à remarquer que le régime établi est un régime dans lequel la tension de sortie a une fréquence et une phase bien particulières par rapport à la fréquence et la phase du signal d’entrée.
A la fin d’un régime transitoire, lorsque l’on entre dans le régime établi, on mesurera de manière précise à l’aide des zooms et des curseurs, la valeur des tensions au nœud « phase » de l’OCT et à l’entrée de celui-ci, lorsque la tension d’entrée de la BVP passe par « 0 » (en montant) ; ces valeurs particulières correspondront au démarrage de notre nouveau régime établi (si Fnul est différente de 0, tenir également compte de la remarque faite en annexe 1, concernant le temps où la mesure doit être faite).
La valeur de la phase peut être imposée par le composant « IC » inclut dans l’OCT ; il va falloir placer un composant de ce type pour imposer la fréquence, en se rappelant qu’ils sont sans effet à la sortie d’un bloc de type LAPLACE. On peut contourner cette limitation en remplaçant le bloc du filtre par un circuit RC.
La méthode n’étant pas parfaite, la simulation en « régime établi » commencera par un transitoire ; celui-ci sera de durée d’autant plus courte que les mesures auront été précises. La simulation en régime transitoire devra donc se faire avec un pas de calcul suffisamment faible et un temps d’analyse suffisamment long pour arriver à l’état stable.
Une solution efficace consiste à utiliser les deux dernières options présentées : effectuer une analyse transitoire, même avec un pas de calcul grossier, puis effectuer une simulation en imposant les conditions initiales mesurées lors du régime transitoire, en demandant au simulateur d’ignorer les données avant un temps correspondant au mini régime transitoire de ce second essais.
Voici ci-après le schéma permettant d’imposer les conditions initiales à l’entrée du filtre ; d’une manière générale, avec un filtre plus complexe, il faudra imposer la valeur de la tension aux bornes de chaque capacité.
L’analyse fréquentielle ne sera exploitable que si on impose des échelles logarithmiques pour les amplitudes au moyen de Plot / Axis setting dans la fenêtre d’affichage des courbes (imposer une échelle ne contenant par la valeur 0).
On rappelle d’autre part si l’acquisition d’un signal temporel est faite sur N points avec une période d’échantillonnage TE (c’est à dire le pas de calcul pour une simulation), la fréquence maximale lors de l’analyse de Four ier par fft sera 1/TE, et la précision (c’est à dire le pas de calcul fréquentiel) sera de 1/(N.TE).
Voici les spectres des signaux d’entrée et sortie pour un filtre dont la constante de temps vaut 500 µs. Un premier essai à été fait pour déterminer un point du régime permanent ; les courbes affichées correspondent à une simulation lors du second essai, sur 20 ms, avec un pas de calcul de 10 µs, les données étant prisent en compte après 2 ms ; l’affichage est zoomé autour des valeurs intéressantes.
"Voici la même simulation avec un filtre dont la constante de temps est fixée à 50 µs :
On note évidemment des raies harmoniques plus importantes sur le signal de sortie (dans un rapport 10 environ pour l’harmonique 3).
Intéressons nous maintenant au comportement de la boucle vis à vis des variations. Pour cela, nous modéliserons le comportement de la BVP avec les outils de l’automatique linéaire, puis nous vérifierons la validité des résultats par la simulation.
Donner la fonction de transfert en boucle ouverte de la BVP en précisant la valeur numérique de chacun des paramètres (les réglages de l’OCT sont ceux du paragraphe de l’étude sur l’accrochage). Pour le comparateur de phase, on se contentera de la pente de la caractéristique autour du déphasage correspondant à la fréquence centrale de l’OCT.
Calculer alors la fonction de transfert en boucle fermé, et à partir de la pulsation propre et du coefficient d’amortissement, déduire la forme de la réponse indicielle en précisant la valeur du dépassement éventuel et de la pulsation d’oscillation (ces valeurs pourront être lues sur les caractéristiques d’un second ordre ou tracées avec Spice en utilisant un bloc « Laplace » de la bibliothèque « ABM »).
Vérifier par la simulation en envoyant un échelon de fréquence autour de la fréquence centrale. Pour cela on placera la boucle dans des conditions initiales correspondant à un état stable autour de cette fréquence (voir méthode décrite au paragraphe précédent), puis on utilisera le montage du paragraphe 1-2 en envoyant un échelon de 1 KHz autour de 10KHz.
Pour observer la réponse, il suffit alors de visualiser le signal à l’entrée de l’OCT (qui à une constante près est le même que la fréquence de sortie).
Tension à l’entrée de l’OCT pour un échelon de 1 KHz à l’entrée de la boucle
Conclure sur les performances de notre asservissement. Sur quels paramètres pourrions nous agir pour améliorer les performances.
Nous utiliserons pour modéliser ces boucles le même OCT, avec une commande unipolaire, les circuits numériques étant généralement alimentés par une source unique (5 V dans ce qui va suivre).
Il faudra veiller alors à ajuster correctement les paramètres de l’OCT, et on se rappellera en particulier que Fnul ne représente pas la fréquence centrale de l’OCT, mais la fréquence pour une tension nulle à l’entrée.
Le comparateur peut être réalisé avec un OU exclusif de la bibliothèque « 74HC » comme le 74HC86 ou bien de la bibliothèque « DIG_PRIM ».
Le signal d’entrée numérique le composant « DigStim1 » de la bibliothèque « SOURCSTM ». Pour imposer le stimuli numérique, sélectionner le symbole, puis par « Edit / SpiceStimulus » sélectionner une horloge de 10 KHz pour un rapport cyclique de 0,5.
Calculer les composants R et C du filtre pour avoir une constante de temps de 80 µs.
Les fréquences extrêmes de l’OCT seront réglées de 7,75 KHz à 12,25 KHz soit un gain de 5,65 Krd/s/V
Lancer une simulation sur 2 ms et vérifier le bon fonctionnement de la boucle.
Tensions d’entrée, de sortie de la boucle, tensions en sortie du multiplieur et du filtre.
Pour mettre en évidence les défauts du comparateur, refaire la même simulation pour une fréquence de 5 KHz en entrée.
Même courbes que précédemment mais pour une fréquence d’entrée de 5 kHz.
Justifier les résultats obtenus.
La description du comparateur de phase étant assez complexe, elle a été reportée en annexe 2.
Dans les simulations qui vont suivre, on n’oubliera pas de configurer comme indiqué en annexe 2 les options de chaque nouveau profil de simulation (initialisation des bascules et gestion des interfaces).
Une fois ce comparateur au point, on se propose de tester le montage complet de la boucle à verrouillage de phase, avec un filtre de type RRC, un rapport de division unitaire et une fréquence d’entrée de 1 MHz.
L’OCT peut alors être configuré avec le valeurs suivantes : FH=1,.5 MHz, Fnul=FB=0.5 Mhz et N=1. Dans ces conditions, en supposant parfaites les sorties des circuits numériques (VDD=5 V), le gain KOCT vaut 1,25 Mrd/s/V.
Lors de l’étude théorique, nous avons modélisé la fonction de transfert en boucle fermée par :
Les courbes données annexe 3 montrent un dépassement de 20% à l’échelon si le coefficient d’amortissement est choisi à 0,7.
La bande passante est alors de 2.wn. et le temps de réponse réduit à 5% est wn.tr=4,.5. On peut raisonnablement choisir un temps de réponse à 5% de 20 périodes du signal d’entrée, soit 20 µs. On obtient alors une bande passante en boucle fermée de 71 kHz (2.wn voir courbes) , ce qui reste raisonnablement faible devant la fréquence du signal d’entrée.
Les calculs donnent alors (R3+R4).C=9,8 µs et R4.C=6,2 µs ; on peut alors choisir un condensateur de 0,1 nF, R4=62 kW et R3=36 kW .
Voici ci-après un premier essais d’accrochage à partir de conditions initiales nulles (entrée à 1 MHz, durée d’analyse 40 µs pour un pas de calcul mini de 0,1 µs).On a relevé les signaux en entrée, sortie, P_UP, P_DWN, ainsi que la tension en sortie du filtre.
On peut noter qu’une fois le régime établi, les deux signaux d’entrée du comparateur sont bien en phase (à un temps de calcul près, du aux temps de propagation des portes et bascules).
Après avoir relevé dans l’essais précédent, la valeur de la tension aux bornes du condensateur, ainsi que celle au nœud « phase » de l’OCT en régime établi lors d’un front montant de l’entrée, on peut dans l’essais qui suit imposer des conditions initiales et étudier une perturbation, ici l’entrée à 1,1 MHz.
Attention par défaut l’entrée démarre par un NL0 ; on peut soit imposer un NL1 dans l’éditeur de stimulis, soit faire les relevés de conditions initiales sur le front descendant.
.
On peut noter que le dépassement est inférieur à celui attendu, 10% au lieu de 20% (soit 1,1 au lieu de 1.2, ce qui fait une erreur de 8%) ; par contre l’erreur sur le temps de réponse à 5% (environ 30 µs au lieu de 20) est plus importante, montrant la limitation de notre modèle en valeur moyenne. On note en effet au début du régime un écart de phase important supérieur à p sur 12 périodes, alors que notre modèle était prévu pour de faibles écarts de phase.
Vérifier que si R4 est nulle (court circuit ou valeur très faible), le système est instable.
On souhaite maintenant réaliser un synthétiseur de fréquence, pour une fréquence en sortie variant de 1 kHz à 100 kHz par pas de 1 kHz. Le filtre de boucle devra être le plus simple possible (type RRC), imposant un dépassement maximal de 20%, ainsi qu’un temps de réponse tr à 5% inférieur 20 ms.
Effectuer les calculs et tester.
Proposer un montage permettant de simuler un modulateur de fréquence à boucle à verrouillage de phase autour d’une porteuse à 2 MHz pour un signal en bande de base de 20 Hz à 15 kHz (bande passante à –3 dB) et un indice de modulation de 5.
Calculer les éléments et simuler.
Proposer un montage permettant de démoduler le signal précédent.
MC145170
Pspice Modellling Kit Note
d’application Motorola AN1671
Phase loop
locked behavioral modeling par D. Andreu, D. Stepan, S. Josse
Newsletter
Spice Club Juin 2001
Introduction à la modélisation comportementale par D. Andreu, D. Stepan, S. Josse
Newsletter
Spice Club Septembre 2001
Analyse et conception des circuits électroniques avec Pspice DesignLab par M. Bougeant, T. Royant chez Eyrolles
Comprendre l’électronique par la simulation par S. Dusausay chez Vuibert
Documentation constructeur
Que la boucle soit analogique ou numérique, l’oscillateur commandé en tension (OCT ou BVP) a un comportement similaire.
Nous allons proposer ici une structure permettant de fixer le gain de l’OCT, ainsi que ses fréquences limites. Deux sorties permettront de choisir entre signal sinusoïdal (boucle analogique et semi-numérique haute fréquence) et carré (boucle semi-numérique basse fréquence type 74HC4046).
La solution qui semble évidente pour modéliser un tel composant est d’utiliser la source contrôlée Exx de Spice et en particulier EVALUE de la bibliothèque ABM (Analog Behavioral Modeling) sous Orcad. Ce modèle permet de définir tous les paramètres de la tension de sortie en fonction de la tension d’entrée. On pourrait alors envisager l’équation suivante pour la sortie :
Dans ce modèle, où il faudrait définir par ailleurs les termes F0 et Koct, la tension d’entrée agit directement sur la pulsation du signal ; la moindre perturbation du signal d’entrée conduit alors à une forte distorsion du signal de sortie. C’est en effet la phase instantanée qui donne la forme du signal et dans l’équation précédente, nous agissons sur la pulsation, c’est à dire la dérivée de la phase. Cette action dérivatrice a pour effet d’amplifier la moindre variation de la tension d’entrée et de distordre le signal de sortie. Ce montage est adapté pour réaliser une modulation de fréquence, mais inadapté pour réaliser l’OCT d’une BVP, dans laquelle le filtre de boucle laissera passer une ondulation résiduelle issue du comparateur de phase.
Il est donc nécessaire que la tension d’entrée agisse sur la phase du signal, et comme on souhaite une relation entre pulsation de sortie et tension d’entrée, il faut placer un intégrateur entre l’entrée et le modulateur de phase, intégrateur qui aura pour effet de “lisser” les ondulations du signal issues du filtre de la BVP.
On arrive alors à la modélisation suivante :
Pour cette première étude, considérons d’abord le paramètre N comme unitaire.
La source commandée E1 est cette fois modulée en phase par sa tension d’entrée.
Cette dernière est le résultat de la charge d’un condensateur (C de la bibliothèque Analog) par une source de courant commandée (GVALUE de ABM). On réalise ainsi l’opération d’intégration nécessaire.
La constante d’intégration est fixée par la valeur de la capacité, ainsi que le gain de la source de courant. On modifie celui-ci pour que le résultat donne Kvco, le gain de l’OCT vis à vis de la pulsation. La résistance R1 (R de Analog) est de valeur importante et évite juste des divergences de calcul du simulateur.
A l’entrée un limiteur (HILO de ABM) permet d’ajuster les fréquences minimale et maximale.
En sortie un amplificateur limiteur (GLIMIT de ABM) permet d’obtenir une tension rectangulaire si nécessaire. La résistance R3 évite que le nœud ne soit “en l’air”, ce qui génère une erreur sous Spice.
Le composant IC (pour Initial Condition, symbole IC1 de la bibliothèque Special) permet d’imposer si nécessaire la valeur de la tension initiale aux bornes du condensateur (et donc la valeur de la phase à l’origine), ce qui peut être intéressant pour limiter la durée des régimes transitoires. Cette solution serait sans effet si nous avions modélisé l’intégrateur de manière comportementale (composant LAPLACE de ABM) ; pour être efficace, elle devra être associée à l’imposition des conditions initiales au niveau du ou des condensateurs du filtre.
Attention :la phase à l’origine ne peut être imposée
correctement qu’avec une mesure, faite sur un essai précédent, à un temps
multiple de 1/Fnul (afin que le terme 2.p.Fnul.t
soit un multiple de 2.p dans
l’expression du sinus)
Le symbole PARAMETERS (PARAM de Special) permet d’afficher les différents paramètres : une fois le symbole positionné sur la page, par un double clic gauche on affiche ses propriétés, puis à l’aide de l’icône « New » on précise le nom d’une nouvelle propriété (Fnul par exemple), à laquelle on donne une valeur par défaut lorsqu’elle apparaît dans la barre des propriétés ; puis à l’aide de l’icône « Display », on demande d’afficher le nom et la valeur. L’opération est répétée pour tous les paramètres. Pour changer la valeur d’un des paramètres, il suffit alors simplement de cliquer gauche deux fois dessus au niveau du symbole PARAMETERS.
On peut donc ainsi régler le gain de l’OCT par Koct (attention il s’agit du gain vis à vis de la pulsation, il faut diviser cette valeur par 2p si on souhaite le gain vis à vis de la fréquence), la fréquence Fnul lorsque l’entrée du montage est nulle (attention ce n’est la fréquence centrale de l’OCT que si la boucle est polarisée autour de 0 V, ce qui ne sera pas le cas avec une boucle semi-numérique), les fréquences maximale et minimale FH et FB (sous réserve que la tension d’entrée puisse atteindre ces valeurs).
D’autres paramètres comme les amplitudes en sortie sont également ajustables.
Le générateur en entrée (ici Vpulse de Source) est juste là pour tester le fonctionnement de l’OCT. Il permettra suivant les paramètres imposés (V1,V2 , TD, TR, TF, PW, PER respectivement les tensions haute et basse, les temps de retard, de montée, de descente, à l’état haut et la période) de générer par exemple une impulsion, une rampe ou une simple tension continue.
Pour un affichage aisé des valeurs lors des simulations, il est conseillé de donner des noms aux nœuds principaux à l’aide de l’icône « Place net alias » de la barre d’outils à droite. Lors du choix des courbes à afficher dans le menu « Add Traces » de la feuille d’affichage des résultats, il suffit de désactiver l’option « Alias Names » pour ne voir apparaître que les nœuds ayant été nommés.
Lorsque l’on souhaite modéliser le comportement d’un synthétiseur de fréquence, la visualisation du signal réel en sortie nécessitera un temps de calcul important, surtout si le rapport de division N du compteur de retour est important. Aussi, si on ne s’intéresse qu’aux performances dynamiques, est-il plus simple d’introduire le paramètre N dans le gain de l’OCT. Il pourra alors être ajusté comme n’importe quel autre paramètre.
Plusieurs schémas et sous schémas vont être générés pour l’étude de la boucle à verrouillage de phase ; il serait possible d’ouvrir un projet à chaque fois (avec les problèmes de gestion des fichiers que cela pose), ou de modifier (et donc de perdre) le schéma précédent.
Il est plus efficace de tout regrouper dans un seul projet, nommé par exemple BVP.opj, à la création duquel on inclura les librairies ABM.olb et BREAKOUT.olb.
On essaiera d’autre part de donner des noms évocateurs, afin de se retrouver dans la hiérarchie des fichiers. Le schéma de l’OCT sera par exemple placé dans la page 1 d’un dossier schéma TEST_OCT (voir figure suivante).
Pour cela on renommera le dossier schéma SCHEMATIC1 qui se crée par défaut à l’ouverture du projet (dans le gestionnaire de fichier –réduire la fenêtre du schéma pour y accéder-, sélectionner le dossier schéma et par clic droit accéder au menu contextuel, puis « rename »).
Nous allons maintenant utiliser le schéma de l’oscillateur comme un sous-ensemble d’une BVP complète, tout en se gardant la possibilité de revenir faire des tests sur notre OCT. Nous procéderons alors de la manière suivante pour créer un schéma complet :
- placer le schéma de l’OCT dans le presse papier (Ctrl A puis Ctrl C) et fermer la page ;
- dans le gestionnaire de fichiers, sélectionner le fichier schéma BVP.dsn et créer un nouveau dossier schéma par Desing / New Schematic, puis donner un nom évocateur (OCT par exemple) ;
- créer un nouvelle page en sélectionnant le dossier schéma précédant, puis Design / New Schematic Page ;
- déclarer le dossier schéma comme dossier principal (celui qui est actif et peut être simulé) ; pour cela le sélectionner (toujours dans le gestionnaire de dossier), le sauvegarder, le sélectionner de nouveau, puis Design / Make Root ;
- ouvrir la page schéma du dossier principal et définir un bloc hiérarchique à l’aide de l’icône « Place hierarchical block » de la barre d’outils de droite :